#pragma once
#ifndef _SCYTHE_H
#define _SCYTHE_H
/*
*	This is the only header you should need to include.  There is a Scythe,h in each of the
*	Scythe API directories, so by setting your include directory, you are setting your engine
*/
//					PHYSX
#include "includePhysX.h"

#include "string"
#include <map>
//engine specific typedefs, set them first
typedef NxScene*		sScene;
typedef NxActor*		sBody;
typedef NxJoint*		sJoint;
typedef int			sSpace;		//null
typedef int			sJointParam;

#include "Vector3.h"
typedef Scythe::Vector3 Vec3;
typedef Scythe::Matrix Mat33;

namespace Scythe {

class SkeletonData;
//as static actors in ODE have no body*, we have to create a custom class to optionally hold
//a static actors position, so we can make a straight list of everything
class ScytheActor				//bodies
{
public:
	ScytheActor(NxActor* b):body(b),index(0), character(0) {}

	~ScytheActor(){  }	//TODO: delete body

	NxActor*		body;
	int			index;
	//bones
	SkeletonData*	character;
	std::string	boneName;
	Vector3		boneOffsetPos;
	Matrix		boneOffsetRot;
};

}

#include "ScytheEngines.h"
#include "utility.h"

extern std::string pathRoot;

#endif
